package org.example.leetcode;

import java.util.HashMap;
import java.util.Map;

/**
 * @version 1.0.0
 * @author: lynn
 * @description:
 * @date: 2021/7/25 13:31
 */
public class LC13 {


    public static void main(String[] args) {
        LC13 lc=new LC13();
        System.out.println(lc.romanToInt("MCMXCIV"));
    }
    public int romanToInt(String s) {
        Map<String,Integer> romanMap=new HashMap<>();
        romanMap.put("M",1000);
        romanMap.put("M",1000);
        romanMap.put("CM",900);
        romanMap.put("D",500);
        romanMap.put("CD",400);
        romanMap.put("C",100);
        romanMap.put("XC",90);
        romanMap.put("L",50);
        romanMap.put("XL",40);
        romanMap.put("X",10);
        romanMap.put("IX",9);
        romanMap.put("V",5);
        romanMap.put("IV",4);
        romanMap.put("I",1);
        int res=0;
        //fixme 防止越界，将0单独拿出来
        if (romanMap.get(String.valueOf(s.charAt(0)))!=null){
            res=res+romanMap.get(String.valueOf(s.charAt(0)));
        }
        for (int i = 1; i <s.length() ; i++) {
            //fixme 拼接的时候是 s.char(i-1)+s.char(i) 不是 s.char(i)+s.char(i-1)
            if (romanMap.get(charToString(s.charAt(i-1),s.charAt(i)))!=null){
                res=res-romanMap.get(charToString(s.charAt(i-1),' '));
                res=res+romanMap.get(charToString(s.charAt(i-1),s.charAt(i)));
            }else {
                res=res+romanMap.get(charToString(s.charAt(i),' '));
            }
        }
        return res;
    }
    private String charToString(char c1,char c2){
        if (c2==' '){
            return String.valueOf(c1);
        }
        return String.valueOf(c1)+String.valueOf(c2);
    }
}
